<!DOCTYPE html>
<html>

<head>
  <meta charset="UTF-8" />
  <title>CehmExpert</title>
  <link rel="manifest" href="manifest.json">
  <meta http-equiv="Content-Type" content="text/html; charset=utf-8" />
  <meta name="viewport" content="width=device-width, initial-scale=1, maximum-scale=1" />
  <meta http-equiv="X-UA-Compatible" content="IE=Edge" />
  <!-- <link
      rel="stylesheet"
      title="default"
      href="https://unpkg.com/amis@beta/sdk/sdk.css"
    />
    <link
      rel="stylesheet"
      href="https://unpkg.com/amis@beta/sdk/helper.css"
    />
    <link
      rel="stylesheet"
      href="https://unpkg.com/amis@beta/sdk/iconfont.css"
    /> -->
  <link rel="stylesheet" href="css/sdk.css" />
  <link rel="stylesheet" href="css/helper.css" />
  <link rel="stylesheet" href="css/iconfont.css" />
  <link rel="stylesheet" href="css/QRCode.css" />
  <link rel="icon" href="image/icon/favicon.ico" type="image/x-icon" />
  <script src="js/sdk.js"></script>
  <script src="js/vue.js"></script>
  <script src="js/history.js"></script>
  <script src="js/jimp.js"></script>
  <script src="js/jsqr.min.js"></script>
  <script src="js/base.js"></script>
  <style>
    html,
    body,
    .app-wrapper {
      position: relative;
      width: 100%;
      height: 100%;
      margin: 0;
      padding: 0;
    }
  </style>
</head>

<body>
  <div id="root" class="app-wrapper"></div>
  <script>
    // 页面加载完之后，注册serviceWorker
    window.addEventListener('load', async () => {
      // 检测是否可用
      if ('serviceWorker' in navigator) {
        try {
          const registration = await navigator.serviceWorker.register('/sw.js');
          console.log("注册成功", registration)
        } catch (e) {
          console.log("注册失败", e)
        }
      }
    });
  </script>
  <script>
    (function () {
      let amis = amisRequire('amis/embed');
      const match = amisRequire('path-to-regexp').match;

      // 如果想用 browserHistory 请切换下这处代码, 其他不用变
      // const history = History.createBrowserHistory();
      const history = History.createHashHistory();

      const app = {
        type: 'app',
        brandName: 'ChemExpert',
        logo: 'public/logo.png',
        header: {
          type: 'tpl',
          inline: false,
          className: 'w-full',
          // tpl: '<div class="flex justify-between"><div>顶部区域左侧</div><div>顶部区域右侧</div></div>'
        },
        // footer: '<div class="p-2 text-center bg-light">底部区域</div>',
        // asideBefore: '<div class="p-2 text-center">菜单前面区域</div>',
        // asideAfter: '<div class="p-2 text-center">菜单后面区域</div>',
        api: 'pages/site.json',
      };

      function normalizeLink(to, location = history.location) {
        to = to || '';

        if (to && to[0] === '#') {
          to = location.pathname + location.search + to;
        } else if (to && to[0] === '?') {
          to = location.pathname + to;
        }

        const idx = to.indexOf('?');
        const idx2 = to.indexOf('#');
        let pathname = ~idx
          ? to.substring(0, idx)
          : ~idx2
            ? to.substring(0, idx2)
            : to;
        let search = ~idx ? to.substring(idx, ~idx2 ? idx2 : undefined) : '';
        let hash = ~idx2 ? to.substring(idx2) : location.hash;

        if (!pathname) {
          pathname = location.pathname;
        } else if (pathname[0] != '/' && !/^https?\:\/\//.test(pathname)) {
          let relativeBase = location.pathname;
          const paths = relativeBase.split('/');
          paths.pop();
          let m;
          while ((m = /^\.\.?\//.exec(pathname))) {
            if (m[0] === '../') {
              paths.pop();
            }
            pathname = pathname.substring(m[0].length);
          }
          pathname = paths.concat(pathname).join('/');
        }

        return pathname + search + hash;
      }

      function isCurrentUrl(to, ctx) {
        if (!to) {
          return false;
        }
        const pathname = history.location.pathname;
        const link = normalizeLink(to, {
          ...location,
          pathname,
          hash: ''
        });

        if (!~link.indexOf('http') && ~link.indexOf(':')) {
          let strict = ctx && ctx.strict;
          return match(link, {
            decode: decodeURIComponent,
            strict: typeof strict !== 'undefined' ? strict : true
          })(pathname);
        }

        return decodeURI(pathname) === link;
      }

      let amisInstance = amis.embed(
        '#root',
        app,
        {
          location: history.location
        },
        {
          // watchRouteChange: fn => {
          //   return history.listen(fn);
          // },
          updateLocation: (location, replace) => {
            location = normalizeLink(location);
            if (location === 'goBack') {
              return history.goBack();
            } else if (
              (!/^https?\:\/\//.test(location) &&
                location ===
                history.location.pathname + history.location.search) ||
              location === history.location.href
            ) {
              // 目标地址和当前地址一样，不处理，免得重复刷新
              return;
            } else if (/^https?\:\/\//.test(location) || !history) {
              return (window.location.href = location);
            }

            history[replace ? 'replace' : 'push'](location);
          },
          jumpTo: (to, action) => {
            if (to === 'goBack') {
              return history.goBack();
            }

            to = normalizeLink(to);

            if (isCurrentUrl(to)) {
              return;
            }

            if (action && action.actionType === 'url') {
              action.blank === false
                ? (window.location.href = to)
                : window.open(to, '_blank');
              return;
            } else if (action && action.blank) {
              window.open(to, '_blank');
              return;
            }

            if (/^https?:\/\//.test(to)) {
              window.location.href = to;
            } else if (
              (!/^https?\:\/\//.test(to) &&
                to === history.pathname + history.location.search) ||
              to === history.location.href
            ) {
              // do nothing
            } else {
              history.push(to);
            }
          },
          isCurrentUrl: isCurrentUrl,
          theme: 'cxd'
        },
        // {
        //   locale: 'en-US'
        // }
      );

      history.listen(state => {
        amisInstance.updateProps({
          location: state.location || state
        });
      });
    })();
  </script>
  <script>
    function sweep(props, parname) {
      document.getElementById('canvas').requestFullscreen();
      const QrCode = new QrCodeRecognition({
        sweepId: '#canvas',
        // uploadId: '#file',
        error: function (err) {
        },
        seuccess: function (res) {
          // if (!res.data.test(/c=([0-9]*)/)) {
          //   return;
          // }
          var data = res.data.match(/c=([0-9]*)/)[1];
          var dic = {};
          dic[parname] = data;
          document.exitFullscreen();
          // alert(res.data);
          localStorage.setItem("scan_uuid", data);
          props.formStore.setValues(dic);
          // props.setData(dic);
        }
      });
      // localStorage.setItem(out, "");
      // result.value = '';
      QrCode.sweep();
    };
        // 从相册选择
        // function upload() {
        //   result = '';
        //   QrCode.upload();
        // };
  </script>
</body>

</html>